package com.portalito.android.actividad;

import java.util.ArrayList;
import java.util.Iterator;

import com.portalito.android.AplicacionBase;
import com.portalito.android.R;
import com.portalito.android.componente.ProductoComponente;
import com.portalito.android.dto.OrdenCompra;
import com.portalito.android.dto.Producto;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TableLayout;

public class ProductoOrdenCompraActividad extends ActividadAuth implements OnClickListener {
	
	public static final String TAG = "ProductoOrdenCompraActividad";
	
	private OrdenCompra ordenCompra;
	private ArrayList<ProductoComponente> componentes;
	private Button cancelarButton, recibirButton;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.productolista);
		
		TableLayout tableLayout = (TableLayout) findViewById(R.id.productoTableLayout);
		cancelarButton = (Button) findViewById(R.id.cancelarRecepcionButton);
		recibirButton = (Button) findViewById(R.id.enviarRecepcionButton);
		
		Intent intent = getIntent();
		int id = intent.getIntExtra(AplicacionBase.AGREGADO_INTENT, 0);
		
		ordenCompra = app.obtenerOrdenCompra(id, true);
		Iterator<Producto> i = ordenCompra.obtenerProductosIterator();
		
		componentes = new ArrayList<ProductoComponente>();
		while(i.hasNext()) {
			Producto producto = i.next();
			ProductoComponente pc = new ProductoComponente(producto, this);
			componentes.add(pc);
			tableLayout.addView(pc);
		}
		
		cancelarButton.setOnClickListener(this);
		recibirButton.setOnClickListener(this);
	}

	public void onClick(View v) {
		if(v == cancelarButton) {
			startActivity(new Intent(this, OrdenCompraListaActividad.class));
		} else if(v == recibirButton) {
			
			if(ordenCompra == null) {
				toast(this, "Error: No hay una orden de compra asociada!");
				return;
			}
			
			boolean guardar = true;
			Log.d(TAG, "Recibir productos!");
			Iterator<ProductoComponente> i = componentes.iterator();
			while(i.hasNext()) {
				ProductoComponente pc = i.next();
				if(pc.esValido() == false) {
					guardar = false;
					break;
				}
			}	
			if(guardar) {
				Iterator<ProductoComponente> i2 = componentes.iterator();
				while(i2.hasNext()) {
					ProductoComponente pc = i2.next();
					Producto producto = pc.getProducto();
					producto.recibir(pc.getCantidad());
					pc.actualizarEstado();
				}
				app.actualizarOrdenCompra(ordenCompra);
				toast(this, "Productos recibidos!");
			} else {
				toast(this, "Algunos de los productos no validaron revise las cantidades recibidas!");
			}
		}
	}	
}
